package problem714;

//714.买卖股票的最佳时机含手续费
//https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/

class Solution {
    public int maxProfit(int[] prices, int fee) {
       int n = prices.length;
       int[][] dp = new int[n][2];
       dp[0][0] = -prices[0];
       for(int i = 1; i<n; i++) {
          dp[i][0] = Math.max(dp[i-1][0], dp[i-1][1]-prices[i]);
          dp[i][1] = Math.max(dp[i-1][1], dp[i-1][0]+prices[i]-fee);
       }
       return dp[n-1][1];
    }
}

/*

dp[i][0]: 第i天结束时, 为买入股票状态的最大收入
dp[i][1]: 第i天结束时, 为卖出股票状态的最大收入

*/